package schema

import (
	"errors"
)

// UserType 用户类型管理
type UserType struct {
	ID       int64    `json:"id" bson:"_id" structs:"id"`                     // 唯一标识(自增ID)
	RecordID string   `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Code     string   `json:"code" bson:"code" structs:"code"`                // 编号
	Name     string   `json:"name" bson:"name" structs:"name"`                // 名称
	Memo     string   `json:"memo" bson:"memo" structs:"memo"`                // 用户类型备注
	RoleIDs  []string `json:"role_ids" bson:"role_ids" structs:"role_ids"`    // 角色ID列表
	Status   int      `json:"status" bson:"status" structs:"status"`          // 状态(1:启用 2:停用)
	Creator  string   `json:"creator" bson:"creator" structs:"creator"`       // 创建人
	Created  int64    `json:"created" bson:"created" structs:"created"`       // 创建时间戳
	Deleted  int64    `json:"deleted" bson:"deleted" structs:"deleted"`       // 删除时间戳
}

// Validate 验证参数
func (a *UserType) Validate() error {
	if a.Code == "" ||
		a.Name == "" ||
		len(a.RoleIDs) == 0 ||
		a.Status == 0 {
		return errors.New("无效的请求参数")
	}
	return nil
}

// UserTypeQueryParam 用户类型管理查询参数
type UserTypeQueryParam struct {
	Name   string // 名称
	Status int    // 状态(1:启用 2:停用)
}

// UserTypeQueryResult 用户类型管理查询结果
type UserTypeQueryResult struct {
	RecordID string `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Code     string `json:"code" bson:"code" structs:"code"`                // 编号
	Name     string `json:"name" bson:"name" structs:"name"`                // 名称
	Memo     string `json:"memo" bson:"memo" structs:"memo"`                // 用户类型备注
	Status   int    `json:"status" bson:"status" structs:"status"`          // 状态(1:启用 2:停用)
}

// UserTypeSelectParam 用户类型管理选择数据查询参数
type UserTypeSelectParam struct{}

// UserTypeSelect 用户类型管理选择数据
type UserTypeSelect struct {
	Code string `json:"code" bson:"code" structs:"code"` // 编号
	Name string `json:"name" bson:"name" structs:"name"` // 名称
}
